package com.monitorStudy.controller;

import io.prometheus.client.Gauge;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 可增可减的仪表盘，曲线图
 * 对于这类可增可减的指标，用于反应应用的当前状态。
 * 例如在监控主机时，主机当前空闲的内存大小，可用内存大小等等。
 * 对于Gauge指标的对象则包含两个主要的方法inc()和dec()，用于增加和减少计数。
 * @author: Alan
 * @date: 2021/5/13 21:55
 */
@RestController
public class GaugeDemo {

    /**指标注册
     * name设置指标名
     * labelNames设置各项指标名称
     * help设置指标描述
     */
    public static final Gauge gaugeDemo = Gauge.build()
            .name("gaugeDemo")
            .labelNames("label1","label2","label3","label4","label5")
            .help("gauge 实例").register();

    /**
     * 指标埋点
     */
    @Scheduled(cron="0/5 * * * * ?")
    @RequestMapping("/changeGauge")
    public  void  changeGauge() {
        //指标值加1
        gaugeDemo.labels("1","2","3","4","5").inc();
        //指标值减一
        gaugeDemo.labels("1","2","3","4","5").dec();
        //指标值直接赋值
        gaugeDemo.labels("1","2","3","4","5").set(19.00);
    }

}
